program Bejeweled;
type
  ScoreNumber = record
    x, y: Integer;
    Number: Integer;
  end;
  ByteArray7 = array[0..7]of Byte;


var
  Form1, Self: TForm;
  Timer1: TTimer;
  Application: TApplication;
  Lauk, Deled: array[1..8]of array[1..8]of Byte;
  UpLauk: array[1..8]of Byte;
  G: array[1..7]of Integer;
  GCanvas: array[1..7]of TCanvas;
  SelX, SelY: Integer;
  Scores: array of ScoreNumber;
  Score: Integer;
  TempBMP: Integer;
  LengthScores: ByteArray7;
  i: Integer;


procedure DrawLauk(x1: Integer; y1: Integer; x2:Integer; y2: Integer);
var
  x, y: Integer;
  Canvas: TCanvas;
begin
  Canvas:= GetBitmapCanvas(TempBMP);
  Canvas.Brush.Style:= bsSolid;
  Canvas.Brush.Color:= clBlack;
  Canvas.Pen.Color:= clBlack;
  Canvas.Rectangle(0, 0, Form1.Width, Form1.Height);
  for y:= y1 to y2 do
  begin
    for x:= x1 to x2 do
    begin
      if(Lauk[x][y] >= 1)then
        //Canvas.Draw(x*32, y*32, G[Lauk[x,y]]);
        CopyCanvas(GCanvas[Lauk[x][y]], Canvas, 0, 0, 32, 32, x*32, y*32, x*32+32, y*32+32);
    end;
  end;
  if(SelX > -1)and (SelY > -1)then
  begin
    x:= SelX; y:= SelY;
    Canvas.Pen.Color:= clBlack;
    Canvas.Brush.Style:= bsClear;
    Canvas.Rectangle(x*32, y*32, x*32+31, y*32+31);
    Canvas.Rectangle(x*32+2, y*32+2, x*32+29, y*32+29);
    Canvas.Pen.Color:= clRed;
    Canvas.Rectangle(x*32+1, y*32+1, x*32+30, y*32+30);
  end;
  for x:= 0 to GetArrayLength(Scores)-1 do
  begin
    Canvas.Brush.Style:= bsClear;
    Canvas.Font.Size:= 14;
    Canvas.Font.Name:= 'Verdana';
    Canvas.Font.Color:= clBlack;
    Canvas.TextOut(Scores[x].x*32+1, Scores[x].y*32+1, IntToStr(Scores[x].Number));
    Canvas.Font.Color:= clWhite;
    Canvas.TextOut(Scores[x].x*32, Scores[x].y*32, IntToStr(Scores[x].Number));
  end;
  Canvas.Brush.Style:= bsClear;
  Canvas.Font.Size:= 12;
  Canvas.Font.Name:= 'Verdana';
  Canvas.Font.Color:= clWhite;
  Canvas.TextOut(32, 293, 'Score: ' + IntToStr(Score * 10));
  Canvas.Pen.Color:= clWhite;
  Canvas.Rectangle(30, 30, 290, 290);
  if(x1 <> 1)or(x2<>8)or(y1<>1)or(y2<>8)then
  begin
    //Form1.Canvas.CopyRect(Rect(x1*32, y1*32, x2*32+32, y2*32+32), TempBMP.Canvas, Rect(x1*32, y1*32, x2*32+32, y2*32+32));
    CopyCanvas(Canvas, Form1.Canvas, x1*32, y1*32, x2*32+32, y2*32+32, x1*32, y1*32, x2*32+32, y2*32+32);
  end else
    //Form1.Canvas.Draw(0, 0, TempBMP);
    CopyCanvas(Canvas, Form1.Canvas, 0, 0, Form1.Width, Form1.Height, 0, 0, Form1.Width, Form1.Height);
end;

procedure InitializeLauk;
var
  x, y: Integer;
begin
  for x:= 1 to 8 do
    for y:= 1 to 8 do
      Lauk[x][y]:= Random(7) + 1;
end;

procedure FormPaint(Sender: TObject);
begin
  DrawLauk(1, 1, 8, 8);
end;

function CanSwap(x1, y1, x2, y2: Integer): Boolean;
begin
  result:= False;
  if(X1 >= 1)and(X1 <= 8)and(Y1 >= 1)and(Y1 <= 8)then
    if(X2 >= 1)and(X2 <= 8)and(Y2 >= 1)and(Y2 <= 8)then
    begin
      result:= ((x1 = x2) and (abs(y1 - y2) = 1)) or
               ((y1 = y2) and (abs(x1 - x2) = 1));
    end;
end;

procedure Swap(x1, y1, x2, y2: Integer);
var
  n, f: Integer;
begin
  //animate it
  Form1.Canvas.Brush.Style:= bsSolid;
  Form1.Canvas.Brush.Color:= clBlack;
  Form1.Canvas.Pen.Color:= clBlack;
  for f:= 0 to 15 do
  begin
    Form1.Canvas.Rectangle(x1*32, y1*32, x1*32+31, y1*32 + 31);
    Form1.Canvas.Rectangle(x2*32, y2*32, x2*32+31, y2*32 + 31);
    //Form1.Canvas.Draw(x2*32 + (x1-x2) * f * 2, y2*32 + (y1-y2) * f * 2, G[Lauk[x2, y2]]);
    CopyCanvas(GCanvas[Lauk[x2][y2]], Form1.Canvas, 0, 0, 32, 32, x2*32 + (x1-x2) * f * 2, y2*32 + (y1-y2) * f * 2, x2*32 + (x1-x2) * f * 2 + 32, y2*32 + (y1-y2) * f * 2 + 32);
    //Form1.Canvas.Draw(x1*32 + (x2-x1) * f * 2, y1*32 + (y2-y1) * f * 2, G[Lauk[x1, y1]]);
    CopyCanvas(GCanvas[Lauk[x1][y1]], Form1.Canvas, 0, 0, 32, 32, x1*32 + (x2-x1) * f * 2, y1*32 + (y2-y1) * f * 2, x1*32 + (x2-x1) * f * 2 + 32, y1*32 + (y2-y1) * f * 2 + 32);
    Sleep(10);
  end;

  n:= Lauk[x1][y1];
  Lauk[x1][y1]:= Lauk[x2][y2];
  Lauk[x2][y2]:= n;
end;

function GetLauk(x, y: Integer): Integer;
begin
  result:= -1;
  if(x>=1)and(x<=8)and(y>=1)and(y<=8)then
    result:= Lauk[x][y];
end;

function CheckLaukSq(c: Char; var last: Integer; x, y: Integer): Boolean;
begin
  result:= True;
  if(c='1')then
  begin
    result:= ((last=-1)or(Lauk[x][y]=last));
    last:= Lauk[x][y];
  end;
end;

function FindVShapeInLauk(s: string; x,y: Integer): Boolean;
var
  last: Integer;
begin
  result:= True;
  last:= -1;
  result:= result and CheckLaukSq(s[1], last, x, y);
  result:= result and CheckLaukSq(s[2], last, x+1, y);
  result:= result and CheckLaukSq(s[3], last, x, y+1);
  result:= result and CheckLaukSq(s[4], last, x+1, y+1);
  result:= result and CheckLaukSq(s[5], last, x, y+2);
  result:= result and CheckLaukSq(s[6], last, x+1, y+2);
end;

function FindHShapeInLauk(s: string; x,y: Integer): Boolean;
var
  last: Integer;
begin
  result:= True;
  last:= -1;
  result:= result and CheckLaukSq(s[1], last, x, y);
  result:= result and CheckLaukSq(s[2], last, x+1, y);
  result:= result and CheckLaukSq(s[3], last, x+2, y);
  result:= result and CheckLaukSq(s[4], last, x, y+1);
  result:= result and CheckLaukSq(s[5], last, x+1, y+1);
  result:= result and CheckLaukSq(s[6], last, x+2, y+1);
end;

function FindHHShapeInLauk(s: string; x,y: Integer): Boolean;
var
  last: Integer;
begin
  result:= True;
  last:= -1;
  result:= result and CheckLaukSq(s[1], last, x, y);
  result:= result and CheckLaukSq(s[2], last, x+1, y);
  result:= result and CheckLaukSq(s[3], last, x+2, y);
  result:= result and CheckLaukSq(s[4], last, x+3, y);
end;

function FindVVShapeInLauk(s: string; x,y: Integer): Boolean;
var
  last: Integer;
begin
  result:= True;
  last:= -1;
  result:= result and CheckLaukSq(s[1], last, x, y);
  result:= result and CheckLaukSq(s[2], last, x, y+1);
  result:= result and CheckLaukSq(s[3], last, x, y+2);
  result:= result and CheckLaukSq(s[4], last, x, y+3);
end;


function HaveMoves: Boolean;
var
  x, y: Integer;
begin
  result:= False;
  for x:= 1 to 7 do
  begin
    for y:= 1 to 6 do
    begin
      result:= result or FindVShapeInLauk('011010',x,y);
      result:= result or FindVShapeInLauk('100101',x,y);
      result:= result or FindVShapeInLauk('011001',x,y);
      result:= result or FindVShapeInLauk('100110',x,y);
      result:= result or FindVShapeInLauk('010110',x,y);
      result:= result or FindVShapeInLauk('101001',x,y);

    end;
  end;
  for x:= 1 to 6 do
  begin
    for y:= 1 to 7 do
    begin
      result:= result or FindHShapeInLauk('011100',x,y);
      result:= result or FindHShapeInLauk('100011',x,y);
      result:= result or FindHShapeInLauk('110001',x,y);
      result:= result or FindHShapeInLauk('001110',x,y);
      result:= result or FindHShapeInLauk('101010',x,y);
      result:= result or FindHShapeInLauk('010101',x,y);
    end;
  end;
  for x:= 1 to 5 do
  begin
    for y:= 1 to 8 do
    begin
      result:= result or FindHHShapeInLauk('1011',x,y);
      result:= result or FindHHShapeInLauk('1101',x,y);
    end;
  end;
  for x:= 1 to 8 do
  begin
    for y:= 1 to 5 do
    begin
      result:= result or FindVVShapeInLauk('1011',x,y);
      result:= result or FindVVShapeInLauk('1101',x,y);
    end;
  end;
end;

function FullLines: Boolean;
var
  n, last, x, y: Integer;
begin
  result:= False;
  for y:= 1 to 8 do
  begin
    n:= 0;
    last:= 0;
    for x:= 1 to 8 do
      if(Lauk[x][y] = last)then
      begin
        n:= n + 1;
        if(n = 3)then
          result:= True;
      end else
      begin
        n:= 1;
        last:= Lauk[x][y];
      end;
  end;
  for x:= 1 to 8 do
  begin
    last:= 0;
    n:= 0;
    for y:= 1 to 8 do
      if(Lauk[x][y] = last)then
      begin
        n:= n + 1;
        if(n = 3)then
          result:= True;
      end else
      begin
        n:= 1;
        last:= Lauk[x][y];
      end;
  end;
end;

function DeleteLine(x, y, xv, yv, num: Integer): Integer;
begin
  result:= LengthScores[num];
  while(num > 0)do
  begin
    Deled[x][y]:= 1;
    x:= x + xv;
    y:= y + yv;
    num:= num - 1;
  end;
end;

procedure DelLine(var Score, Base: Integer; x, y, xv, yv, n: Integer);
var
  k: Integer;
begin
  k:= DeleteLine(x, y, xv, yv, n);
  SetArrayLength(Scores, GetArrayLength(Scores) + 1);
  Scores[GetArrayLength(Scores)-1].x:= x + xv;
  Scores[GetArrayLength(Scores)-1].y:= y + yv;
  Scores[GetArrayLength(Scores)-1].Number:= (base + k) * 10;
  Score:= Score + base + k;
  base:= base + 1;
end;

function DeleteLines(base: Integer): Integer;
var
  n, last, x, y: Integer;
begin
  for x:= 1 to 8 do
    for y:= 1 to 8 do
      Deled[x][y]:= 0;
  result:= 0;
  for y:= 1 to 8 do
  begin
    n:= 0;
    last:= 0;
    for x:= 1 to 8 do
      if(Lauk[x][y] = last)then
      begin
        n:= n + 1;
      end else
      begin
        if(n >= 3)then
        begin
          DelLine(result, base, x-1, y, -1, 0, n);
        end;
        n:= 1;
        last:= Lauk[x][y];
      end;
    if(n >= 3)then
    begin
      DelLine(result, base, 8, y, -1, 0, n);
    end;
  end;
  for x:= 1 to 8 do
  begin
    last:= 0;
    n:= 0;
    for y:= 1 to 8 do
      if(Lauk[x][y] = last)then
      begin
        n:= n + 1;
      end else
      begin
        if(n >= 3)then
        begin
          DelLine(result, base, x, y-1, 0, -1, n);
        end;
        n:= 1;
        last:= Lauk[x][y];
      end;
    if(n >= 3)then
    begin
      DelLine(result, base, x, 8, 0, -1, n);
    end;
  end;
  for x:= 1 to 8 do
    for y:= 1 to 8 do
      if(Deled[x][y]=1)then
        Lauk[x][y]:= 0;
end;

function CanDropLines: Boolean;
var
  x, y: Integer;
begin
  result:= False;
  for x:= 1 to 8 do
    for y:= 1 to 8 do
      result:= result or (Lauk[x][y] <= 0);
end;

procedure GenerateUpperLine;
var
  f: Integer;
begin
  for f:= 1 to 8 do
    UpLauk[f]:= Random(7) + 1;
end;

procedure DropLine;
var
  x, y, f: Integer;
  FLauk: array[1..8] of array[0..8]of Byte;
begin
  GenerateUpperLine;
  for x:= 1 to 8 do
    for y:= 1 to 8 do
      FLauk[x][y]:= 0;

  for y:= 8 downto 1 do
  begin
    for x:= 1 to 8 do
    begin
      if(Lauk[x][y] < 1)or(FLauk[x][y] = 1)then
      begin
        FLauk[x][y-1]:= 1;
      end;
    end;
  end;


  //animate it
  Form1.Canvas.Brush.Style:= bsSolid;
  Form1.Canvas.Brush.Color:= clBlack;
  Form1.Canvas.Pen.Color:= clBlack;
  for f:= 0 to 7 do
  begin
    for y:= 8 downto 1 do
    begin
      for x:= 1 to 8 do
      begin
        if(FLauk[x][y] = 1)then
        begin
          if(Lauk[x][y] > 0)then
          begin
            Form1.Canvas.Rectangle(x*32, y*32 + f * 4 - 3, x*32+31, y*32 + f*4);
            //Form1.Canvas.Draw(x*32, y*32 + f*2, G[Lauk[x, y]]);
            CopyCanvas(GCanvas[Lauk[x][y]], Form1.Canvas, 0, 0, 32, 32, x*32, y*32 + f*4, x*32 + 32, y*32 + f*4 + 32);
          end;
        end;
      end;
    end;
    //upper line
    for x:= 1 to 8 do
    begin
      if(FLauk[x][0] = 1)then
        //Form1.Canvas.CopyRect(Rect(x*32,32,x*32+32,32+f*2), G[Uplauk[x]].Canvas, Rect(0, 0, 32, f*2));
        CopyCanvas(GCanvas[UpLauk[x]], Form1.Canvas, 0, 32-f*4, 32, 32, x*32,32,x*32+32,32+f*4);
    end;
    Sleep(10);
  end;
  for y:= 8 downto 2 do
  begin
    for x:= 1 to 8 do
    begin
      if(Lauk[x][y] < 1)then
      begin
        Lauk[x][y]:= Lauk[x][y-1];
        Lauk[x][y-1]:= 0;
      end;
    end;
  end;
  for x:= 1 to 8 do
  begin
    if(Lauk[x][1] < 1)then
    begin
      Lauk[x][1]:= UpLauk[x];
    end;
  end;
end;

procedure NewGame;
begin
  InitializeLauk;
  SelX:= -1;
  SelY:= -1;
  repeat
    DeleteLines(0);
    while(CanDropLines)do
      DropLine;
  until(not FullLines);
  SetArrayLength(Scores, 0);
  DrawLauk(1,1,8,8);
  Score:= 0;
end;


procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Base: Integer;
begin
  X:= X div 32;
  Y:= Y div 32;
  if(X >= 1)and(X <= 8)and(Y >= 1)and(Y <= 8)then
  begin
    if(CanSwap(SelX, SelY, X, Y))then
    begin
      Swap(SelX, SelY, X, Y);
      if(not FullLines)then
      begin
        //Swap back
        Swap(SelX, SelY, X, Y);
        SelX:= -1;
        SelY:= -1;
      end else
      begin
        SelX:= -1;
        SelY:= -1;
        Base:= 0;
        SetArrayLength(Scores, 0);
        repeat
          Score:= Score + DeleteLines(Base);
          DrawLauk(1,1,8,8);
          Sleep(200);
          Base:= Base + 1;
          while(CanDropLines)do
            DropLine;
        until(not FullLines);
        Timer1.Enabled:= True;
      end;
      DrawLauk(1,1,8,8);
    end else
    if(X = SelX)and(Y = SelY)then
    begin
      SelX:= -1;
      SelY:= -1;
      DrawLauk(1,1,8,8);
    end else
    begin
      SelX:= X;
      SelY:= Y;
      DrawLauk(1,1,8,8);
    end;
  end;
  if(not HaveMoves)then
    if(Application.MessageBox('You lost! Score: ' + IntToStr(Score*10) + #13#10 + 'Play Again?', 'Game Over', 4) = 6)then
    begin
      NewGame;
      DrawLauk(1,1,8,8);
    end;
end;

procedure Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled:= False;
  SetArrayLength(Scores, 0);
  DrawLauk(1,1,8,8);
end;

procedure CreateBitmaps;
begin
  G[1] := BitmapFromString(32, 32,
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000000000002A2A2A000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000002C2B072423101C1C1C000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000001F1F07000000363600' +
       '21200E1C1C1C000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000001F1F079F9F1F000000EFEF0036360021200E1C1C1C000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000001F1F079F9F1FFFFF33000000' +
       'FFFF00EFEF0036360021200E1C1C1C000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '1F1F079F9F1FFFFF33FFFF33000000FFFF00FFFF00EFEF00363600' +
       '21200E1C1C1C000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000001F1F079F9F1FFFFF33FFFF33FFFF33' +
       '000000FFFF00FFFF00FFFF00EFEF0036360021200E1C1C1C000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000000000000000001F1F07' +
       '9F9F1FFFFF33FFFF33FFFF33FFFF33000000FFFF00FFFF00FFFF00' +
       'FFFF00EFEF0036360021200E1C1C1C000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000003535058F8F1CFFFF33FFFF33FFFF33FFFF33' +
       'FFFF33000000FFFF00FFFF00FFFF00FFFF00FFFF00EFEF00363600' +
       '32300B1C1C1C000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000000000003D3D055F5F13' +
       'FFFF33FFFF33FFFF33FFFF33FFFF33FFFF33000000FFFF00FFFF00' +
       'FFFF00FFFF00FFFF00FFFF00EFEF0036360038350A1C1C1C000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000003D3D055F5F13FFFF33FFFF33FFFF33FFFF33FFFF33' +
       'FFFF33FFFF33000000FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00' +
       'FFFF00EFEF0036360038350A1C1C1C000000000000000000000000' +
       '0000000000000000000000000000000000003D3D055F5F13FFFF33' +
       'FFFF33FFFF33FFFF33FFFF33FFFF33FFFF33FFFF33000000FFFF00' +
       'FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00EFEF00363600' +
       '38350A1C1C1C000000000000000000000000000000000000000000' +
       '0000003D3D055F5F13FFFF33FFFF33FFFF33FFFF33FFFF33FFFF33' +
       'FFFF33FFFF33FFFF33000000FFFF00FFFF00FFFF00FFFF00FFFF00' +
       'FFFF00FFFF00FFFF00FFFF00EFEF0036360038350A1A1918000000' +
       '0000000000000000000000000000003D3D055F5F13FFFF33FFFF33' +
       'FFFF33FFFF33FFFF33FFFF33FFFF33FFFF33FFFF33FFFF33000000' +
       'FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00' +
       'FFFF00EFEF003636003734081A1917000000000000000000000000' +
       '3D3D055F5F13FFFF33FFFF33FFFF33FFFF47FFFF5EFFFF6EFFFF76' +
       'FFFF73FFFF68FFFF55FFFF3D000000FFFF00FFFF00FFFF00FFFF00' +
       'FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00EFEF00363600' +
       '3734081A19170000000000003A390E000000000000000000080808' +
       '373737656565949494C2C2C2F1F1F1DEDEDEB0B0B0818181535353' +
       '242424000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000B0A0022210C1A1917000000' +
       '1C1C1C0A0A0A9F9F00FFFF00FFFF00FFFF00FFFF15FFFF36FFFF4A' +
       'FFFF54FFFF51FFFF43FFFF21FFFF09000000FFCC00FFCC00FFCC00' +
       'FFCC00FFCC00FFCC00FFCC00FFCC00FFCC00FFCC00FFCC00EFBF00' +
       '342A001514060F0E0D1918160000000000001C1C1C0A0A0A9F9F00' +
       'FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00' +
       'FFFF00000000FFCC00FFCC00FFCC00FFCC00FFCC00FFCC00FFCC00' +
       'FFCC00FFCC00FFCC00EFBF00342A001514070F0E0D1918161F1D1B' +
       '0000000000000000001C1C1C0A0A0A9F9F00FFFF00FFFF00FFFF00' +
       'FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00000000FFCC00FFCC00' +
       'FFCC00FFCC00FFCC00FFCC00FFCC00FFCC00FFCC00EFBF00342A00' +
       '1615080F0E0E1918161F1D1B000000000000000000000000000000' +
       '1C1C1C0A0A0A9F9F00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00' +
       'FFFF00FFFF00000000FFCC00FFCC00FFCC00FFCC00FFCC00FFCC00' +
       'FFCC00FFCC00EFBF00342A001615081010101918171F1D1B000000' +
       '0000000000000000000000000000000000001C1C1C0A0A0A9F9F00' +
       'FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00000000FFCC00' +
       'FFCC00FFCC00FFCC00FFCC00FFCC00FFCC00EFBF00342A00161508' +
       '1010101B1B1B1F1E1C000000000000000000000000000000000000' +
       '0000000000000000001C1C1C0A0A0A9F9F00FFFF00FFFF00FFFF00' +
       'FFFF00FFFF00FFFF00000000FFCC00FFCC00FFCC00FFCC00FFCC00' +
       'FFCC00EFBF00342A001615081010101B1B1B212121000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '1C1C1C0F0F089F9F00FFFF00FFFF00FFFF00FFFF00FFFF00000000' +
       'FFCC00FFCC00FFCC00FFCC00FFCC00EFBF00342A00161508101010' +
       '1B1B1B212121000000000000000000000000000000000000000000' +
       '00000000000000000000000000000000000021211A1A19059F9F00' +
       'FFFF00FFFF00FFFF00FFFF00000000FFCC00FFCC00FFCC00FFCC00' +
       'EFBF00342A001615081010101B1B1B212121000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '00000000000000000023221C1A19059F9F00FFFF00FFFF00FFFF00' +
       '000000FFCC00FFCC00FFCC00EFBF00342A001615081010101B1B1B' +
       '212121000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '23221C1A19059F9F00FFFF00FFFF00000000FFCC00FFCC00EFBF00' +
       '342A001615081010101B1B1B212121000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '00000000000000000000000000000000000023221C1A19059F9F00' +
       'FFFF00000000FFCC00EFBF00342A001615081010101B1B1B212121' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '00000000000000000022211A1A19049F9F00000000EFBF00342A00' +
       '16150810100F1A1A1920201F000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '211F171A1804000000342A001514060F0E0D1918161F1D1B000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000211F172A2804151406' +
       '0F0E0D1918161F1D1B000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000001B1A181514131918161F1D1B000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '201F1C22211E000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000');
    G[2] := BitmapFromString(32, 32,
       '000000000000000000000000171614000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '2121210000000000000000000000000000000000000000002B2925' +
       '0000003E1818C00000ED0000ED0000ED0000ED0000ED0000ED0000' +
       'ED0000ED0000ED0000000000FE3939FE3939FE3939FE3939FE3939' +
       'FE3939FE3939FE39397F1C1C0A00000000001C1C1C000000000000' +
       '0000000000000000002E2C280303029E5050ED78783E1818C00000' +
       'ED0000ED0000ED0000ED0000ED0000ED0000ED0000ED0000000000' +
       'FE3939FE3939FE3939FE3939FE3939FE3939FE39395F15151F0000' +
       '8A00005F0000030303252525000000000000000000312F2B090908' +
       '6E3838FD8080FD8080ED78784F2828940000ED0000ED0000ED0000' +
       'ED0000ED0000ED0000ED0000000000FE3939FE3939FE3939FE3939' +
       'FE3939EE35355F15151F00009F0000AA0000AA00003F0000070707' +
       '2C2C2C000000000000100F0E4F2828FD8080FD8080FD8080FDAAAA' +
       'FEB7B7795252940000ED0000ED0000ED0000ED0000ED0000ED0000' +
       '000000FE3939FE3939FE3939FE3939EE35352F0A0A2A00009F0000' +
       'AA0000AA0000AA00009F00001F00000E0E0E2F2F2F312F2B000000' +
       '0000000000000000001D1D1D9D9D9DDEDEDE606060000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000001D1D1D2E2C28000000FB6E6EFB6E6EFB6E6EFB6F6F' +
       '686868F78888F03838ED0000ED0000ED0000ED0000ED0000ED0000' +
       'ED0000000000C70000C70000C70000C70000C70000C70000C70000' +
       'C70000000000D40000D40000D40000D400000000001C1C1C2E2C28' +
       '000000FB6E6EFB6E6EFB6E6EFB6E6E000000ED0707ED0000ED0000' +
       'ED0000ED0000ED0000ED0000ED0000ED0000000000C70000C70000' +
       'C70000C70000C70000C70000C70000C70000000000D40000D40000' +
       'D40000D400000000001C1C1C2E2C28000000FB6E6EFB6E6EFB6E6E' +
       'FB6E6E000000ED0000ED0000ED0000ED0000ED0000ED0000ED0000' +
       'ED0000ED0000000000C70000C70000C70000C70000C70000C70000' +
       'C70000C70000000000D40000D40000D40000D400000000001C1C1C' +
       '2E2C28000000FB6E6EFB6E6EFB6E6EFB6E6E000000ED0000ED0000' +
       'ED0000ED0000ED0000ED0000ED0000ED0000ED0000000000C70000' +
       'C70000C70000C70000C70000C70000C70000C70000000000D40000' +
       'D40000D40000D400000000001C1C1C2E2C28000000FB6E6EFB6E6E' +
       'FB6E6EFB6E6E000000ED0000ED0000ED0000ED0000ED0000ED0000' +
       'ED0000ED0000ED0000000000C70000C70000C70000C70000C70000' +
       'C70000C70000C70000000000D40000D40000D40000D40000000000' +
       '1C1C1C2E2C28000000FB6E6EFB6E6EFB6E6EFB6E6E000000ED0000' +
       'ED0000ED0000ED0000ED0000ED0000ED0000ED0000ED0000000000' +
       'C70000C70000C70000C70000C70000C70000C70000C70000000000' +
       'D40000D40000D40000D400000000001C1C1C2E2C28000000FB6E6E' +
       'FB6E6EFB6E6EFB6E6E000000ED0000ED0000ED0000ED0000ED0000' +
       'ED0000ED0000ED0000ED0000000000C70000C70000C70000C70000' +
       'C70000C70000C70000C70000000000D40000D40000D40000D40000' +
       '0000001C1C1C2E2C28000000FB6E6EFB6E6EFB6E6EFB6E6E000000' +
       'ED0000ED0000ED0000ED0000ED0000ED0000ED0000ED0000ED0000' +
       '000000C70000C70000C70000C70000C70000C70000C70000C70000' +
       '000000D40000D40000D40000D400000000001C1C1C2E2C28000000' +
       'FB6E6EFB6E6EFB6E6EFB6E6E000000ED0000ED0000ED0000ED0000' +
       'ED0000ED0000ED0000ED0000ED0000000000C70000C70000C70000' +
       'C70000C70000C70000C70000C70000000000D40000D40000D40000' +
       'D400000000001C1C1C2E2C28000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000000000001C1C1C2A2925' +
       '000000C70000C70000C70000C70000000000E10000E10000E10000' +
       'E10000E10000E10000E10000E10000E10000000000C41717C41717' +
       'C41717C41717C41717C41717C41717C41717000000FE3939FE3939' +
       'FE3939FE39390000001C1C1C272622000000C70000C70000C70000' +
       'C70000000000E10000E10000E10000E10000E10000E10000E10000' +
       'E10000E10000000000C41717C41717C41717C41717C41717C41717' +
       'C41717C41717000000FE3939FE3939FE3939FE39390000001C1C1C' +
       '272622000000C70000C70000C70000C70000000000E10000E10000' +
       'E10000E10000E10000E10000E10000E10000E10000000000C41717' +
       'C41717C41717C41717C41717C41717C41717C41717000000FE3939' +
       'FE3939FE3939FE39390000001C1C1C272622000000C70000C70000' +
       'C70000C70000000000E10000E10000E10000E10000E10000E10000' +
       'E10000E10000E10000000000C41717C41717C41717C41717C41717' +
       'C41717C41717C41717000000FE3939FE3939FE3939FE3939000000' +
       '1C1C1C272622000000C70000C70000C70000C70000000000E10000' +
       'E10000E10000E10000E10000E10000E10000E10000E10000000000' +
       'C41717C41717C41717C41717C41717C41717C41717C41717000000' +
       'FE3939FE3939FE3939FE39390000001C1C1C272622000000C70000' +
       'C70000C70000C70000000000E10000E10000E10000E10000E10000' +
       'E10000E10000E10000E10000000000C41717C41717C41717C41717' +
       'C41717C41717C41717C41717000000FE3939FE3939FE3939FE3939' +
       '0000001C1C1C272622000000C70000C70000C70000C70000000000' +
       'E10000E10000E10000E10000E10000E10000E10000E10000E10000' +
       '000000C41717C41717C41717C41717C41717C41717C41717C41717' +
       '000000FE3939FE3939FE3939FE39390000001C1C1C272622000000' +
       'C70000C70000C70000C70000000000E10000E10000E10000E10000' +
       'E10000E10000E10000E10000E10000000000C41717C41717C41717' +
       'C41717C41717C41717C41717C41717000000FE3939FE3939FE3939' +
       'FE39390000001C1C1C272622000000C70000C70000C70000C70000' +
       '000000E10000E10000E10000E10000E10000E10000E10000E10000' +
       'E10000000000C41717C41717C41717C41717C41717C41717C41717' +
       'C41717000000FE3939FE3939FE3939FE39390000001C1C1C22211E' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000001C1C1C2927230606055D0000F90000F90000' +
       'F90000F90000F900005D00006A0000AA0000AA0000AA0000AA0000' +
       'AA0000AA0000000000FE3939FE3939FE3939FE3939EE35352F0A0A' +
       '5E2929FB6E6EFB6E6EFB6E6EFB6E6EEB67672F14140909091C1C1C' +
       '0000001F1F1D0101019B0000F90000F90000E900005D00006A0000' +
       'AA0000AA0000AA0000AA0000AA0000AA0000AA0000000000FE3939' +
       'FE3939FE3939FE3939FE3939EE35352F0A0A4E2222EB6767FB6E6E' +
       'FB6E6E5E2929040403181818242323000000000000181818000000' +
       'CA0000E900003900007F0000AA0000AA0000AA0000AA0000AA0000' +
       'AA0000AA0000AA0000000000FE3939FE3939FE3939FE3939FE3939' +
       'FE3939EE35354F11112F1414EB67678D3D3D0101011413111D1C19' +
       '0000000000000000000000000F0F0F1F00003900008A0000AA0000' +
       'AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000000000' +
       'FE3939FE3939FE3939FE3939FE3939FE3939FE3939FE39395F1515' +
       '2F1414000000100F0E1B1A18000000000000000000000000000000' +
       '0000000F0F0F000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000000C0B0A1A1917000000' +
       '0000000000000000000000000000000000000000001C1C1C1C1C1C' +
       '1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C' +
       '1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1B1B1A1A19171A19171A1917' +
       '1A19171A19171A1917000000000000000000000000');
    G[3] := BitmapFromString(32, 32,
       '0000000000000000000000000000000000000000000E0E0E000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '00000000000000000000000000000000000024221F000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000232323000F00003900009900009900009900009900' +
       '009900009900009900009900009900009900009900009900009900' +
       '009900001300010701151412000000000000000000000000000000' +
       '000000000000000000000000000000000000232323005F0000CF00' +
       '000900008F00009900009900009900009900009900009900009900' +
       '009900009900009900009900009900007200000600005F00011401' +
       '151412000000000000000000000000000000000000000000000000' +
       '000000232323005F0000FF0000FF00002F00005F00009900009900' +
       '009900009900009900009900009900009900009900009900009900' +
       '009900003900002C00006600005F00011401161514000000000000' +
       '000000000000000000000000000000232323005F0000FF0000FF00' +
       '00FF00009F00001C00009900009900009900009900009900009900' +
       '009900009900009900009900009900008F00000000005900006600' +
       '006600005900040B041A1917000000000000000000000000000000' +
       '232323005F0000FF0000FF0000FF0000FF0000EF00000F000D820D' +
       '18A2180D9E0D009900009900009900009900009900009900009900' +
       '009900005600001900006600006600006600006600005200040B04' +
       '1A1917000000000000000000232323005F0000FF0000FF0000FF00' +
       '00FF0000FF0000FF0027782751785161C06151B95129A929009900' +
       '009900009900009900009900009900009900001300003F00006600' +
       '006600006600006600006600005200040B04181715000000000000' +
       '000000000000000F00003F00003F00007F00007F0013A61355B455' +
       '8F938FABD9AB90D29057BC5715A115009900009900009900009900' +
       '009900007200000000004C00003F00003300002C00001900001900' +
       '0000000000000101011B1A1819191900000000CC0000BF00009900' +
       '0099000066000066002264226B886BB4B4B4F3F3F3B6B6B66E6E6E' +
       '252525000000000000000000000000000000000000000000001900' +
       '002600003300003900004C00004C000066000066000000001A1917' +
       '19191900000000CC0000CC0000CC0000CC0000CC0000CC001AD11A' +
       '5FDF5F9E9E9EC2FFC2A1FFA162FF621CFF1C00FF0000FF0000FF00' +
       '00FF0000FF0000FF00000000006600006600006600006600006600' +
       '0066000066000066000000001A191719191900000000CC0000CC00' +
       '00CC0000CC0000CC0000CC0000CC0037D73765656578FF7867FF67' +
       '39FF3900FF0000FF0000FF0000FF0000FF0000FF0000FF00000000' +
       '006600006600006600006600006600006600006600006600000000' +
       '1A191719191900000000CC0000CC0000CC0000CC0000CC0000CC00' +
       '00CC0000CC002222222FFF2F23FF2301FF0100FF0000FF0000FF00' +
       '00FF0000FF0000FF0000FF00000000006600006600006600006600' +
       '0066000066000066000066000000001A191719191900000000CC00' +
       '00CC0000CC0000CC0000CC0000CC0000CC0000CC0000000000FF00' +
       '00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00' +
       '000000006600006600006600006600006600006600006600006600' +
       '0000001A191719191900000000CC0000CC0000CC0000CC0000CC00' +
       '00CC0000CC0000CC0000000000FF0000FF0000FF0000FF0000FF00' +
       '00FF0000FF0000FF0000FF0000FF00000000006600006600006600' +
       '0066000066000066000066000066000000001A1917191919000000' +
       '00CC0000CC0000CC0000CC0000CC0000CC0000CC0000CC00000000' +
       '00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00' +
       '00FF00000000006600006600006600006600006600006600006600' +
       '0066000000001A191719191900000000CC0000CC0000CC0000CC00' +
       '00CC0000CC0000CC0000CC0000000000FF0000FF0000FF0000FF00' +
       '00FF0000FF0000FF0000FF0000FF0000FF00000000006600006600' +
       '0066000066000066000066000066000066000000001A1917191919' +
       '00000000CC0000CC0000CC0000CC0000CC0000CC0000CC0000CC00' +
       '00000000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00' +
       '00FF0000FF00000000006600006600006600006600006600006600' +
       '0066000066000000001A191719191900000000CC0000CC0000CC00' +
       '00CC0000CC0000CC0000CC0000CC0000000000FF0000FF0000FF00' +
       '00FF0000FF0000FF0000FF0000FF0000FF0000FF00000000006600' +
       '0066000066000066000066000066000066000066000000001A1917' +
       '19191900000000CC0000CC0000CC0000CC0000CC0000CC0000CC00' +
       '00CC0000000000FF0000FF0000FF0000FF0000FF0000FF0000FF00' +
       '00FF0000FF0000FF00000000006600006600006600006600006600' +
       '0066000066000066000000001A191719191900000000CC0000CC00' +
       '00CC0000CC0000CC0000CC0000CC0000CC0000000000FF0000FF00' +
       '00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000' +
       '006600006600006600006600006600006600006600006600000000' +
       '1A191719191900000000CC0000CC0000CC0000CC0000CC0000CC00' +
       '00CC0000CC0000000000FF0000FF0000FF0000FF0000FF0000FF00' +
       '00FF0000FF0000FF0000FF00000000006600006600006600006600' +
       '0066000066000066000066000000001A191719191900000000CC00' +
       '00CC0000CC0000CC0000CC0000CC0000CC0000CC0000000000FF00' +
       '00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00' +
       '000000006600006600006600006600006600006600006600006600' +
       '0000001A191719191900000000CC0000BF00009900009900006600' +
       '006600004C00003300000000000000000000000000000000000000' +
       '000000000000000000000000000000000000001900002600003300' +
       '003300004C00004C00005F000066000000001A1917191919000000' +
       '000000000900002600002600004C00004C00005F00005600000600' +
       '005F00006600006600006600006600006600006600006600006600' +
       '004C00000000002600001F00001900001900000C00000C00000300' +
       '0000000101011A1917191919111111003900009900009900009900' +
       '009900009900009900003900002600006600006600006600006600' +
       '006600006600006600006600006600006600000C00001F00003300' +
       '003300003300003300003300002F00000A000D0C0B1A1917000000' +
       '262524111010003900009900009900009900009900008F00000900' +
       '005200006600006600006600006600006600006600006600006600' +
       '006600006600003900000C00003300003300003300003300002F00' +
       '000A000D0C0C19181700000000000000000024221F100F0E003900' +
       '009900009900009900005F00001300006600006600006600006600' +
       '006600006600006600006600006600006600006600005F00000000' +
       '002C00003300003300002F00000A000E0E0E1B1B1B000000000000' +
       '00000000000000000024221F100F0E003900009900009900001C00' +
       '003F00006600006600006600006600006600006600006600006600' +
       '006600006600006600006600002600001600003300002F00000A00' +
       '0C0C0C1B1B1B000000000000000000000000000000000000000000' +
       '1F1D1B100F0E003900007C00000600005F00006600006600006600' +
       '006600006600006600006600006600006600006600006600006600' +
       '004C00000300002F00000A000C0C0C191919000000000000000000' +
       '0000000000000000000000000000000000001F1D1B100F0E000900' +
       '002600006600006600006600006600006600006600006600006600' +
       '006600006600006600006600006600006600000C000004000C0C0C' +
       '191919000000000000000000000000000000000000000000000000' +
       '0000000000000000001F1D1B090908000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000F0F0F191919000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '201F1C1A19171A19171A19171A19171A19171A19171A19171A1917' +
       '1A19171A19171A19171A19171A19171A19181C1C1C1C1C1C1C1C1C' +
       '000000000000000000000000000000000000000000');
    G[4] := BitmapFromString(32, 32,
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000001313111F1E1B000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '1A19170303020000000E08000606051F1E1B000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000002726220606052B2001AF8205000000DB8100' +
       '7545000000000B0B0A252421000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000002E2C28100F0E0E0A00' +
       '836103EAAE07EAAE07000000EA8A00EA8A00CC7800492B00010101' +
       '10100F000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '312F2B1A1917000000574102DBA306EAAE07EAAE07EAAE07000000' +
       'EA8A00EA8A00EA8A00EA8A00AF67002B19000303031C1C1C000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000211F1C0606053A2B01BE8D05EAAE07' +
       'EAAE07EAAE07EAAE07EAAE07000000EA8A00EA8A00EA8A00EA8A00' +
       'EA8A00EA8A00834D000E0800070707000000000000000000000000' +
       '0000000000000000000000000000000000000000002B29250D0C0B' +
       '1D1500926C04EAAE07EAAE07EAAE07EAAE07EAAE07EAAE07EAAE07' +
       '000000EA8A00EA8A00EA8A00EA8A00EA8A00EA8A00EA8A00DB8100' +
       '663C000000000E0E0E000000000000000000000000000000000000' +
       '000000312F2B171614000000755703DBA306EAAE07EAAE07EAAE07' +
       'EAAE07EAAE07EAAE07EAAE07DBA306000000754500EA8A00EA8A00' +
       'EA8A00EA8A00EA8A00EA8A00EA8A00EA8A00CC78003A2200010101' +
       '1717170000000000000000000000001D1C190303023A2B01CC9806' +
       'EAAE07EAAE07EAAE07EAAE07EAAE07EAAE07EAAE07EAAE07836103' +
       '0E0A00492F002B1C001D1100AF6700EA8A00EA8A00EA8A00EA8A00' +
       'EA8A00EA8A00EA8A00EA8A00AF67001D11000303031F1F1F000000' +
       '2927230000001D1500AF8205EAAE07EAAE07EAAE07EAAE07EAAE07' +
       'EAAE07EAAE07AF82052B20011D1300AF7200EA9900EA9900835600' +
       '0E0900492B00CC7800EA8A00EA8A00EA8A00EA8A00EA8A00EA8A00' +
       'EA8A009256000000000000001D1D1D2E2C28000000755E180E0B03' +
       '1D1500926C04DBA306EDBC31F0C652E4BB48624D130E0900754C00' +
       'EA9900EA9900EA9900EA9900EA9900DB8F005739000E0800754500' +
       'EA8A00EA8A00EA8A00CC78007545000E0800180E007B4700000000' +
       '1C1C1C2E2C28000000EABC30EABC3092751E2B23092A271EA99A71' +
       'D5CAAB9B99957D6B4ACC8500EA9900EA9900EA9900EA9900EA9900' +
       'EA9900EA9900EA9900AF72002B1C001D1100925600573300000000' +
       '3D2300945500C67200C672000000001C1C1C2E2C28000000EABC30' +
       'EABC30EABC30EABC30BDA04AB2AA92E4E4E4E9D8BAF1BE5DEA9900' +
       'EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900' +
       'EA9900835600000000563100AD6300C67200C67200C67200C67200' +
       '0000001C1C1C2E2C28000000EABC30EABC30EABC30EABC30EBC140' +
       'F2D67F949494F5CD82EFB23FEA9900EA9900EA9900EA9900EA9900' +
       'EA9900EA9900EA9900EA9900EA9900EA9900EA9900000000C67200' +
       'C67200C67200C67200C67200C672000000001C1C1C2E2C28000000' +
       'EABC30EABC30EABC30EABC30EABC30ECC244383838EDAB2EEA9900' +
       'EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900' +
       'EA9900EA9900EA9900000000C67200C67200C67200C67200C67200' +
       'C672000000001C1C1C2E2C28000000EABC30EABC30EABC30EABC30' +
       'EABC30EABC30000000EA9900EA9900EA9900EA9900EA9900EA9900' +
       'EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900000000' +
       'C67200C67200C67200C67200C67200C672000000001C1C1C2E2C28' +
       '000000EABC30EABC30EABC30EABC30EABC30EABC30000000EA9900' +
       'EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900' +
       'EA9900EA9900EA9900EA9900000000C67200C67200C67200C67200' +
       'C67200C672000000001C1C1C2E2C28000000EABC30EABC30EABC30' +
       'EABC30EABC30EABC30000000EA9900EA9900EA9900EA9900EA9900' +
       'EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900' +
       '000000C67200C67200C67200C67200C67200C672000000001C1C1C' +
       '2E2C28000000EABC30EABC30EABC30EABC30EABC30CCA42A000000' +
       'EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900EA9900' +
       'EA9900EA9900EA9900EA9900DB8F00000000B96A00C67200C67200' +
       'C67200C67200C672000000001C1C1C2E2C28000000EABC30EABC30' +
       'EABC30CCA42A5746120000001D11001D1300925F00EA9900EA9900' +
       'EA9900EA9900EA9900EA9900EA9900EA9900EA9900DB8F00754C00' +
       '0E0900180E000C0700633900B96A00C67200C67200C67200000000' +
       '1C1C1C2E2C28000000EABC30CCA42A574612000000573300CC7800' +
       'EA8A009256001D11001D1300925F00EA9900EA9900EA9900EA9900' +
       'EA9900DB8F00754C000E0900311C00945500C67200945500311C00' +
       '0C0700633900B96A00C672000000001C1C1C2E2C28000000574612' +
       '000000573300CC7800EA8A00EA8A00EA8A00EA8A00EA8A00925600' +
       '1D11001D1300925F00EA9900DB8F00754C000E0900311C00945500' +
       'C67200C67200C67200C67200C67200945500311C000C0700633900' +
       '0000001C1C1C2927230000001D1100CC7800EA8A00EA8A00EA8A00' +
       'EA8A00EA8A00EA8A00EA8A00EA8A00EA8A009256001D11001D1300' +
       '0E0900311C00945500C67200C67200C67200C67200C67200C67200' +
       'C67200C67200C67200884E000C07000000001C1C1C000000111110' +
       '0303031D1100925600EA8A00EA8A00EA8A00EA8A00EA8A00EA8A00' +
       'EA8A00EA8A00EA8A00EA8A00000000A05C00C67200C67200C67200' +
       'C67200C67200C67200C67200C67200C67200B96A006339000C0700' +
       '0303020E0E0D1B1A190000000000001F1F1F1111110303033A2200' +
       'AF6700EA8A00EA8A00EA8A00EA8A00EA8A00EA8A00EA8A00EA8A00' +
       '000000C67200C67200C67200C67200C67200C67200C67200C67200' +
       'B96A006339000C07000303020E0D0C1817151D1C192C2A26000000' +
       '0000000000000000001D1D1D0E0E0E0101013A2200AF6700EA8A00' +
       'EA8A00EA8A00EA8A00EA8A00EA8A00000000C67200C67200C67200' +
       'C67200C67200C67200C672006339000C07000303020D0C0B171614' +
       '1D1C192A2925000000000000000000000000000000000000000000' +
       '0000001C1C1C0E0E0E0101013A2200AF6700EA8A00EA8A00EA8A00' +
       'EA8A00000000C67200C67200C67200C67200C672007B4700180E00' +
       '0202020D0C0B1615141B1A18272622000000000000000000000000' +
       '0000000000000000000000000000000000000000000000001C1C1C' +
       '0E0E0E0101013A2200BE7000EA8A00EA8A00000000C67200C67200' +
       'C672007B4700180E000101010B0A091615141B1A18272622000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000001C1C1C0E0E0E000000' +
       '573300CC7800000000C672007B4700180E000101010C0C0C181717' +
       '1B1A18272622000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000001A1A1A0A0A0A000000000000180E00' +
       '0101010A0A0A1616161D1D1D292928000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000002626261818180E0E0E0C0C0C1616161C1C1C262626000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000262626' +
       '232323262626000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000');
  G[5] := BitmapFromString(32, 32,
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000181818252525000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '00000015151500000007000F1C1C1C000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000000B000F0000004D009F' +
       '010101282828000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000303037B00AF0000007C00FF3E007F030303303030000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000707075A007FB400FF000000' +
       '7C00FF7C00FF26004F080808000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '1111112D003FB400FFB400FF0000007C00FF7C00FF7400EF0F001F' +
       '131313000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000B000FA800EFB400FFB400FF' +
       '0000007C00FF7C00FF7C00FF6400CF000000222120000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0303038700BFB400FFB400FFB400FF0000007C00FF7C00FF7C00FF' +
       '7C00FF45008F0303022A2925000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000E0E0E4E006FB400FFB400FFB400FF' +
       'B400FF0000007C00FF7C00FF7C00FF7C00FF7C00FF1F003F0D0C0B' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '16001FA800EFB400FFB400FFB400FFB400FF0000007C00FF7C00FF' +
       '7C00FF7C00FF7C00FF6C00DF07000F1A1917000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000303038700BFB400FFB400FFB400FF' +
       'B400FFB400FF0000007400EF7C00FF7C00FF7C00FF7C00FF7C00FF' +
       '45008F0303022A2925000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000151515' +
       '38004FB400FFB400FFB400FFB400FFB400FF8700BF13131317002F' +
       '7C00FF7C00FF7C00FF7C00FF7C00FF7C00FF1F003F0E0E0C000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000B000F9D00DFB400FFB400FFB400FF' +
       'B400FFA800EF3C333FA536BB28052F2E005F7C00FF7C00FF7C00FF' +
       '7C00FF7C00FF6400CF010101201F1C000000000000000000000000' +
       '0000000000000000000000000000000000000000000000000E0E0E' +
       '5A007FB400FFB400FFB400FFB400FFB400FF5733669D6BA7DC2AFF' +
       'CC1AEF1B031F5500AF7C00FF7C00FF7C00FF7C00FF7C00FF2E005F' +
       '090908000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000B000FA800EFB400FFB400FFB400FF' +
       'B400FF7013978F8391E076F5DA1CFFDA1CFF9513AF07000F6C00DF' +
       '7C00FF7C00FF7C00FF7C00FF6C00DF0000001F1E1B000000000000' +
       '0000000000000000000000000000000000000000000000000E0E0E' +
       '5A007FB400FFB400FFB400FFB400FFA800EF746E77E3B7EBE045FF' +
       'DA1CFFDA1CFFDA1CFF5F0C6F26004F7C00FF7C00FF7C00FF7C00FF' +
       '7C00FF36006F090908000000000000000000000000000000000000' +
       '00000000000000000000000016001FB400FFB400FFB400FFB400FF' +
       'B400FF6B3782DACBDDEE98FFDA1CFFDA1CFFDA1CFFDA1CFFCC1AEF' +
       '1B031F5D00BF7C00FF7C00FF7C00FF7C00FF7400EF07000F1D1C19' +
       '0000000000000000000000000000000000000000000000000E0E0E' +
       '70009FB400FFB400FFB400FFB400FF9D00DF918B92F7DCFCDF3FFF' +
       'DA1CFFDA1CFFDA1CFFDA1CFFDA1CFF88119F0F001F7C00FF7C00FF' +
       '7C00FF7C00FF7C00FF3E007F090908000000000000000000000000' +
       '0000000000000000000000000B000FB400FFB400FFB400FFB400FF' +
       'B400FF6F3C85DDC7E1EA85FFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFF' +
       'DA1CFFDA1CFF1B031F4D009F7C00FF7C00FF7C00FF7C00FF6C00DF' +
       '0000001F1D1B000000000000000000000000000000000000131313' +
       '5A007FB400FFB400FFB400FFB400FFA800EF737373E6A4F2DC29FF' +
       'DA1CFFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFF88119F1F003F' +
       '7C00FF7C00FF7C00FF7C00FF7C00FF2E005F0E0E0C000000000000' +
       '0000000000000000000000000101019D00DFB400FFB400FFB400FF' +
       'B400FF78219DA580ACE250FFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFF' +
       'DA1CFFDA1CFFDA1CFFDA1CFF0D010F6C00DF7C00FF7C00FF7C00FF' +
       '7C00FF5D00BF03030224221F00000000000000000000000020201F' +
       '38004FB400FFB400FFB400FFB400FFB400FF5C3A6BB454C7DA1CFF' +
       'DA1CFFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFF' +
       '5F0C6F3E007F7C00FF7C00FF7C00FF7C00FF7C00FF0F001F171716' +
       '0000000000000000000000000B0B0A70009FB400FFB400FFB400FF' +
       'B400FFA800EF2B2B2BDA1DFFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFF' +
       'DA1CFFDA1CFFDA1CFFDA1CFFDA1CFFA315BF17002F7C00FF7C00FF' +
       '7C00FF7C00FF7C00FF36006F0C0C0C000000000000000000000000' +
       '000000A800EFB400FFB400FFB400FFA800EF38004F0D010F6D0E7F' +
       '6D0E7FA315BFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFFDA1CFFA315BF' +
       '6D0E7F5F0C6F0000003E007F7C00FF7C00FF7C00FF7C00FF6400CF' +
       '0303030000000000000000001D1C1938004FB400FFB400FFB400FF' +
       '5A007F0B000F1E004D4800BA30007C30007C18003E000000000000' +
       '00000000000000000000000018003E30007C36008B4200AA12002E' +
       '0F001F5500AF7C00FF7C00FF7C00FF0F001F161616000000000000' +
       '0D0C0B70009FB400FF70009F16001F12002E4800BA6100F86100F8' +
       '6100F86100F86100F86100F86100F86100F86100F86100F86100F8' +
       '6100F86100F86100F86100F86100F83C009B06000F1F003F5D00BF' +
       '7C00FF36006F0F0F0F00000000000001010170009F2D003F0C001F' +
       '3C009B6100F86100F86100F86100F86100F86100F86100F86100F8' +
       '6100F86100F86100F86100F86100F86100F86100F86100F86100F8' +
       '6100F86100F85A00E830007C06000F2E005F45008F080808000000' +
       '27262200000006000F30007C5A00E86100F86100F86100F86100F8' +
       '6100F86100F86100F86100F86100F86100F86100F86100F86100F8' +
       '6100F86100F86100F86100F86100F86100F86100F86100F86100F8' +
       '5400D924005D00000001010100000024221F070706000000000000' +
       '18003E36008B4E00C96100F86100F86100F86100F86100F86100F8' +
       '6100F86100F86100F86100F86100F86100F86100F86100F86100F8' +
       '6100F86100F85A00E84200AA2A006C0C001F000000000000060606' +
       '0000000000001B1A1819181616151411110F0B0A0A040404000000' +
       '0C001F18003E2A006C30007C30007C30007C30007C30007C30007C' +
       '30007C30007C30007C30007C1E004D18003E000000000000020202' +
       '0808080F0F0F1818181818181C1C1C0000000000000000002A2925' +
       '27262222211E1B1A181A191717161415151311100F0F0E0D090908' +
       '090908090908090908090908090908090908090908090908090908' +
       '0A0A091111111414141818181A1A1A1C1C1C1F1F1F000000000000' +
       '0000000000000000000000000000000000000000000000002F2E29' +
       '292723272622201F1C201F1C1A19171A19171A19171A19171A1917' +
       '1A19171A19171A19171A19171A19171A1918232323252525000000' +
       '000000000000000000000000000000000000000000');
    G[6] := BitmapFromString(32, 32,
       '000000000000000000000000000000000000000000100F0E000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000001514142C2C2C000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000001313115D7C9F95C7FF95C7FF6688AF171B1FBFDCFF' +
       'BFDCFFBFDCFFBFDCFFBFDCFFBFDCFFBFDCFFA7C0DF0000004292EC' +
       '479CFC479CFC1A3A5E111111262626000000000000000000000000' +
       '0000000000000000000000000000000000001313115D7C9F95C7FF' +
       '95C7FF95C7FF2E3E4F5F6E7FBFDCFFBFDCFFBFDCFFBFDCFFBFDCFF' +
       'BFDCFFBFDCFFBFDCFF2F373F27578D479CFC479CFC479CFC1A3A5E' +
       '111111262626000000000000000000000000000000000000000000' +
       '0000001313115D7C9F95C7FF95C7FF95C7FF8BBAEF000000A7C0DF' +
       'BFDCFFBFDCFFBFDCFFBFDCFFBFDCFFBFDCFFBFDCFFBFDCFF77899F' +
       '0D1D2F479CFC479CFC479CFC479CFC1A3A5E111111262626000000' +
       '0000000000000000000000000000001313115D7C9F95C7FF95C7FF' +
       '95C7FF95C7FF5D7C9F23292FBFDCFFBFDCFFBFDCFFBFDCFFBFDCFF' +
       'BFDCFFBFDCFFBFDCFFBFDCFFB3CEEF0000003E88DC479CFC479CFC' +
       '479CFC479CFC1A3A5E111111262626000000000000000000000000' +
       '1313115D7C9F95C7FF95C7FF95C7FF95C7FF95C7FF3B4653798799' +
       'BFDCFFBFDCFFBFDCFFBFDCFFBFDCFFBFDCFFBFDCFFBFDCFFBFDCFF' +
       'BFDCFF3B444F234E7E479CFC479CFC479CFC479CFC479CFC1A3A5E' +
       '1111112626260000000000001313115D7C9F95C7FF95C7FF95C7FF' +
       '95C7FF95C7FF9DBFE6868686DAE7F7CBE2FFBFDCFFBFDCFFBFDCFF' +
       'BFDCFFBFDCFFBFDCFFBFDCFFBFDCFFBFDCFF8397AF08131F479CFC' +
       '479CFC479CFC479CFC479CFC479CFC1A3A5E0E0E0E262626292723' +
       '010101000000000000000000000000000000000000595959CACACA' +
       'C2C2C2505050000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000101011C1C1C2F2E290D0C0B1A2B3F69AEFF69AEFF' +
       '69AEFF69AEFF69AEFF87BEFF818386C1D3E6B4D8FFA9D3FFA9D3FF' +
       'A9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FF5F768F0B2B4F' +
       '268BFF268BFF268BFF268BFF268BFF2382EF02080F1414141F1F1F' +
       '000000201F1C0303023B618F69AEFF69AEFF69AEFF69AEFF69AEFF' +
       '324B685B6F85A9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FF' +
       'A9D3FFA9D3FFA9D3FF1F272F17569F268BFF268BFF268BFF268BFF' +
       '268BFF0B2B4F0707071C1C1C000000000000000000151412060A0F' +
       '62A3EF69AEFF69AEFF69AEFF69AEFF416C9F1F272FA9D3FFA9D3FF' +
       'A9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FF9EC5EF000000' +
       '2382EF268BFF268BFF268BFF268BFF1A5FAF010101191919000000' +
       '00000000000000000000000008070720364F69AEFF69AEFF69AEFF' +
       '69AEFF62A3EF0000009EC5EFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FF' +
       'A9D3FFA9D3FFA9D3FF69839F071A2F268BFF268BFF268BFF268BFF' +
       '2382EF02080F1111111F1F1F000000000000000000000000000000' +
       '1F1D1B0101014E82BF69AEFF69AEFF69AEFF69AEFF13202F7491AF' +
       'A9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FF3F4F5F' +
       '13457F268BFF268BFF268BFF268BFF103C6F0606061C1C1C000000' +
       '0000000000000000000000000000000000000E0E0C0D151F62A3EF' +
       '69AEFF69AEFF69AEFF2D4C6F3F4F5FA9D3FFA9D3FFA9D3FFA9D3FF' +
       'A9D3FFA9D3FFA9D3FFA9D3FF0A0D0F1E70CF268BFF268BFF268BFF' +
       '1C68BF000000171717000000000000000000000000000000000000' +
       '0000000000002726220606052D4C6F69AEFF69AEFF69AEFF4E82BF' +
       '151A1FA9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FF7E9EBF' +
       '04111F268BFF268BFF268BFF2382EF04111F0E0E0E1D1D1D000000' +
       '0000000000000000000000000000000000000000000000001A1917' +
       '000000558DCF69AEFF69AEFF69AEFF060A0F89ABCFA9D3FFA9D3FF' +
       'A9D3FFA9D3FFA9D3FFA9D3FF495C6F0E345F268BFF268BFF268BFF' +
       '13457F0505051B1B1B000000000000000000000000000000000000' +
       '0000000000000000000000000000000D0C0B13202F69AEFF69AEFF' +
       '69AEFF20364F5F768FA9D3FFA9D3FFA9D3FFA9D3FFA9D3FFA9D3FF' +
       '1F272F1A5FAF268BFF268BFF1E70CF000000151515232323000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000002524210303023B618F69AEFF69AEFF416C9F2A343FA9D3FF' +
       'A9D3FFA9D3FFA9D3FFA9D3FF93B8DF0000002382EF268BFF268BFF' +
       '071A2F0C0C0C1D1D1D000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000151412060A0F' +
       '5B98DF69AEFF5B98DF0000009EC5EFA9D3FFA9D3FFA9D3FFA9D3FF' +
       '69839F09223F268BFF268BFF154E8F0202021A1918000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000002C2A260B0A0A1A2B3F69AEFF69AEFF13202F' +
       '7491AFA9D3FFA9D3FFA9D3FFA9D3FF34414F154E8F268BFF2179DF' +
       '02080F121110201F1E000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '201F1C0101014877AF69AEFF2D4C6F3F4F5FA9D3FFA9D3FFA9D3FF' +
       'A9D3FF0000002179DF268BFF09223F0909081A1917000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000131211060A0F62A3EF' +
       '4E82BF151A1FA9D3FFA9D3FFA9D3FF7491AF04111F268BFF17569F' +
       '020202171614000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000002927230606052D4C6F69AEFF060A0F89ABCFA9D3FF' +
       'A9D3FF495C6F103C6F2382EF02080F100F0E1D1C19000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000000000000000001D1C19' +
       '0101014E82BF20364F5F768FA9D3FFA9D3FF151A1F1A5FAF0B2B4F' +
       '0707061A1917000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000D0C0B13202F3B618F34414F' +
       'A9D3FF89ABCF02080F1A5FAF000000161514000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '00000028272405050427415F000000A9D3FF5F768F09223F04111F' +
       '0F0E0D1C1B1A000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000000000001C1C1C000000' +
       '0000007491AF2A343F02080F0505051C1C1C000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000C0C0C0000003F4F5F000000000000' +
       '161616000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000303030000000000000E0E0E000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000161616000000030303' +
       '1B1B1B000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000F0F0F151515000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000');
    G[7] := BitmapFromString(32, 32,
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000312F2B2726221A1917' +
       '1A19171A19171A19171A19171A1917272622000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '2E2C28100F0E0D0D0D3434345353535252525151514F4F4F4D4D4D' +
       '3838381B1B1B0606051A19172E2C28000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000001A1917161616797979A5A5A5AFAFAF' +
       'AEAEAEABABABA9A9A9A5A5A5A1A1A19D9D9D989898656565232323' +
       '030302312F2B000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000312F2B181816' +
       '717171B7B7B7B8B8B8B8B8B8B7B7B7B5B5B5B2B2B2AFAFAFACACAC' +
       'A8A8A8A3A3A39D9D9D9898989393934646460303022B2925000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000514F4B5C5B572E2D2C979797BDBDBDBFBFBFC0C0C0C0C0C0' +
       'BEBEBEBDBDBDBABABAB6B6B6B2B2B2AEAEAEA9A9A9A3A3A39D9D9D' +
       '979797919191565656000000211F1C000000000000000000000000' +
       '0000000000000000000000000000005D5B5793928F979796ABABAB' +
       'C7C7C7C5C5C5C6C6C6C7C7C7C7C7C7C6C6C6C4C4C4C1C1C1BDBDBD' +
       'B8B8B8B4B4B4AEAEAEA8A8A8A2A2A29C9C9C9696968F8F8F777777' +
       '1A1919262626000000000000000000000000000000000000000000' +
       '000000767572B7B7B6F3F3F3E5E5E5D4D4D4CCCCCCCECECECFCFCF' +
       'CFCFCFCDCDCDCBCBCBC7C7C7C3C3C3BEBEBEB9B9B9B3B3B3ADADAD' +
       'A6A6A6A0A0A09999999393938B8B8B7C7C7C0D0D0D252525000000' +
       '00000000000000000000000000000000000063635FACACACEEEEEE' +
       'E4E4E4D6D6D6D3D3D3D5D5D5D6D6D6D6D6D6D5D5D5D2D2D2CECECE' +
       'C9C9C9C4C4C4BEBEBEB8B8B8B1B1B1ABABABA3A3A39D9D9D969696' +
       '8E8E8E8787876060600A0A0A262626000000000000000000000000' +
       '0000000000001C1B1AC2C2C2DCDCDCDADADAD6D6D6D9D9D9DDDDDD' +
       'DEDEDEDEDEDEDCDCDCD9D9D9D4D4D4CFCFCFC9C9C9C2C2C2BBBBBB' +
       'B5B5B5AEAEAEA7A7A7A0A0A09999999191918A8A8A828282171717' +
       '1515152C2C2C0000000000000000000000002B2925484848C8C8C8' +
       'CFCFCFD5D5D5DBDBDBE0E0E0E4E4E4E6E6E6E5E5E5E3E3E3DFDFDF' +
       'D9D9D9D3D3D3CDCDCDC6C6C6BFBFBFB8B8B8B1B1B1A9A9A9A2A2A2' +
       '9A9A9A9393938B8B8B8484844E4E4E0808081D1D1D000000000000' +
       '000000000000171614868686CBCBCBD2D2D2D9D9D9E0E0E0E6E6E6' +
       'EBEBEBEDEDEDEDEDEDEAEAEAE4E4E4DEDEDED7D7D7D0D0D0C9C9C9' +
       'C1C1C1BABABAB2B2B2ABABABA3A3A39C9C9C9494948D8D8D858585' +
       '7E7E7E0000001C1C1C262626000000000000000000090908B9B9B9' +
       'CDCDCDD5D5D5DCDCDCE3E3E3EAEAEAF1F1F1F5F5F5F4F4F4EFEFEF' +
       'E8E8E8E1E1E1DADADAD2D2D2CBCBCBC3C3C3BBBBBBB4B4B4ACACAC' +
       'A5A5A59D9D9D9696968E8E8E8686867E7E7E1616161616161D1D1D' +
       '000000000000000000000000C6C6C6CECECED5D5D5DDDDDDE5E5E5' +
       'EDEDEDF4F4F4FCFCFCF9F9F9F2F2F2EAEAEAE2E2E2DBDBDBD3D3D3' +
       'CCCCCCC4C4C4BCBCBCB5B5B5ADADADA5A5A59D9D9D9696968E8E8E' +
       '8787877F7F7F2D2D2D1515151C1C1C000000000000000000000000' +
       'C6C6C6CDCDCDD5D5D5DCDCDCE4E4E4EBEBEBF3F3F3F8F8F8F7F7F7' +
       'F1F1F1EAEAEAE2E2E2DBDBDBD3D3D3CBCBCBC4C4C4BCBCBCB4B4B4' +
       'ACACACA5A5A59D9D9D9696968E8E8E8787877F7F7F3B3B3B0F0F0F' +
       '1C1C1C000000000000000000000000C4C4C4CCCCCCD3D3D3DBDBDB' +
       'E1E1E1E8E8E8EDEDEDF1F1F1F0F0F0ECECECE6E6E6DFDFDFD8D8D8' +
       'D1D1D1CACACAC3C3C3BBBBBBB3B3B3ACACACA4A4A49D9D9D959595' +
       '8D8D8D8585857E7E7E2C2C2C0E0E0E1C1C1C2A2A2A000000000000' +
       '060605C2C2C2C9C9C9D0D0D0D7D7D7DDDDDDE2E2E2E7E7E7E9E9E9' +
       'E8E8E8E5E5E5E1E1E1DBDBDBD5D5D5CECECEC7C7C7C0C0C0B9B9B9' +
       'B1B1B1AAAAAAA3A3A39B9B9B9494948C8C8C8585857D7D7D1D1D1D' +
       '1515151C1C1C2323230000000000000D0C0B9B9B9BC6C6C6CCCCCC' +
       'D2D2D2D8D8D8DCDCDCDFDFDFE1E1E1E1E1E1DFDFDFDBDBDBD6D6D6' +
       'D0D0D0CACACAC4C4C4BDBDBDB6B6B6AFAFAFA8A8A8A0A0A0999999' +
       '9292928A8A8A8383837C7C7C0E0E0E1616161C1C1C232323000000' +
       '0000001A1917747474C1C1C1C7C7C7CDCDCDD2D2D2D6D6D6D8D8D8' +
       'D9D9D9D9D9D9D8D8D8D5D5D5D0D0D0CCCCCCC6C6C6C0C0C0B9B9B9' +
       'B2B2B2ACACACA5A5A59E9E9E979797909090888888818181727272' +
       '0000001C1C1C1C1C1C2323230000000000002B2925444444BDBDBD' +
       'C2C2C2C7C7C7CBCBCBCFCFCFD1D1D1D2D2D2D2D2D2D0D0D0CDCDCD' +
       'CACACAC6C6C6C0C0C0BBBBBBB5B5B5AFAFAFA8A8A8A2A2A29B9B9B' +
       '9494948D8D8D8585857E7E7E4B4B4B0808081C1C1C1C1C1C282828' +
       '000000000000000000090908ABABABBCBCBCC1C1C1C4C4C4C7C7C7' +
       'C9C9C9CACACACACACAC9C9C9C7C7C7C3C3C3C0C0C0BBBBBBB5B5B5' +
       'B0B0B0AAAAAAA4A4A49D9D9D9797979090908A8A8A8282827C7C7C' +
       '1515151111111C1C1C1C1C1C000000000000000000000000211F1C' +
       '595959B6B6B6BABABABDBDBDC0C0C0C2C2C2C3C3C3C3C3C3C1C1C1' +
       'C0C0C0BDBDBDB9B9B9B5B5B5B0B0B0ABABABA5A5A59F9F9F999999' +
       '9393938D8D8D8686867F7F7F5A5A5A0505051C1C1C1C1C1C1C1C1C' +
       '0000000000000000000000000000000D0C0B8F8F8FB3B3B3B6B6B6' +
       'B8B8B8BABABABBBBBBBBBBBBBABABAB8B8B8B5B5B5B2B2B2AEAEAE' +
       'AAAAAAA5A5A5A0A0A09A9A9A9494948E8E8E888888828282747474' +
       '1010101818181C1C1C1C1C1C232323000000000000000000000000' +
       '000000312F2B2322228B8B8BAFAFAFB1B1B1B2B2B2B3B3B3B3B3B3' +
       'B2B2B2B1B1B1AEAEAEABABABA8A8A8A3A3A39F9F9F9A9A9A959595' +
       '9090908A8A8A8484847E7E7E2D2D2D1414141C1C1C1C1C1C1D1D1D' +
       '000000000000000000000000000000000000000000211F1C0A0A0A' +
       '9D9D9DA9A9A9ABABABACACACACACACABABABA9A9A9A7A7A7A5A5A5' +
       'A1A1A19D9D9D9999999494949090908A8A8A8585857777771F1F1F' +
       '100F0E1B1B1A1C1C1C1C1C1C000000000000000000000000000000' +
       '0000000000000000000000002C2A28000000464646989898A4A4A4' +
       'A4A4A4A3A3A3A2A2A2A0A0A09D9D9D9A9A9A9797979393938E8E8E' +
       '8A8A8A8585856767671111111515131A19181B1A1A1B1B1A000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000002727270303031D1D1D6B6B6B9C9C9C9C9C9C9A9A9A999999' +
       '9696969393939090908C8C8C888888737373373737050505161616' +
       '1C1C1C1C1C1C1A1918000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000202020' +
       '0707070909093737376565656C6C6C6B6B6B6969696666664B4B4B' +
       '2828280303031111111A1A1A1C1C1C1C1C1C1C1C1C000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000000000000000002A2A2A151515070707' +
       '0707070707070707070707070A0A0A1313131C1C1C1C1C1C1C1C1C' +
       '1C1C1C1F1F1F000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '0000000000000000000000003333332626261D1D1D1C1C1C1C1C1C' +
       '1C1C1C1C1C1C1C1C1C1C1C1C1F1F1F000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000000000000000' +
       '000000000000000000000000000000000000000000');

end;

begin
    Application:= GetApplication;
    Self:= GetSelf;
    Self.WindowState:= wsMinimized;
    Form1:= TForm.Create(Application);
    Form1.Width:= 325;
    Form1.Height:= 355;
    Form1.Position:= poScreenCenter;
    Form1.BorderStyle:= bsDialog;
    Form1.Caption:= 'SCAR Bejeweled 0.2';
    Form1.OnMouseDown:= @FormMouseDown;
    Form1.OnPaint:= @FormPaint;
    Timer1:= TTimer.Create(Form1);
    Timer1.OnTimer:= @Timer1Timer;
    LengthScores[0]:= 0;
    LengthScores[1]:= 1;
    LengthScores[2]:= 1;
    LengthScores[3]:= 1;
    LengthScores[4]:= 2;
    LengthScores[5]:= 3;
    LengthScores[6]:= 5;
    LengthScores[7]:= 7;
  CreateBitmaps;
  for i:= 1 to 7 do
    GCanvas[i]:= GetBitmapCanvas(G[i]);

  TempBMP:= BitmapFromString(Form1.Width, Form1.Height, '');

  NewGame;

  Self.Hide;

  Form1.ShowModal;
  Self.Show;
  Self.WindowState:= wsNormal;

  Form1.Free;


end.

